package Offer575;

import java.util.HashSet;

/**
 * 分糖果
 * Alice 有 n 枚糖，其中第 i 枚糖的类型为 candyType[i] 。Alice 注意到她的体重正在增长，所以前去拜访了一位医生。
 * 医生建议 Alice 要少摄入糖分，只吃掉她所有糖的 n / 2 即可（n 是一个偶数）。Alice 非常喜欢这些糖，她想要在遵循医生建议的情况下，尽可能吃到最多不同种类的糖。
 * 给你一个长度为 n 的整数数组 candyType ，返回： Alice 在仅吃掉 n / 2 枚糖的情况下，可以吃到糖的最多种类数。
 * @author 23737
 * @time 2021.11.01
 */
public class Test {
    public static void main(String[] args) {
        System.out.println(new Solution().distributeCandies(new int[]{1, 1, 2, 2, 3, 3}));
    }
}

/**
 * 使用哈希表来解题
 */
class Solution {
    public int distributeCandies(int[] candyType) {
        HashSet<Integer> hashSet = new HashSet<>();
        int half = candyType.length/2;
        for (int j : candyType) {
            hashSet.add(j);
            if (hashSet.size() > half) return half;
        }
        return hashSet.size();
    }
}
